<html>
<head><meta charset="utf-8"><title>QuickCheck tests · project-portable-simd · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/index.html">project-portable-simd</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html">QuickCheck tests</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="212144314"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/212144314" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#212144314">(Oct 03 2020 at 00:39)</a>:</h4>
<p>I'm looking into using quickcheck to expand our test suite (I haven't used it before).  Is the expectation to replace the vast majority of tests with quickcheck, such as those checking that various ops actually work correctly?  For example, would you use it to ensure that core::ops::Add actually adds two u8x8s lanewise, or is that too trivial a case?</p>



<a name="212144326"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/212144326" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#212144326">(Oct 03 2020 at 00:39)</a>:</h4>
<p>^ <span class="user-mention" data-user-id="281757">@Jubilee</span> since you brought it up originally, I think</p>



<a name="212144481"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/212144481" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#212144481">(Oct 03 2020 at 00:42)</a>:</h4>
<p>quickcheck and its relatives like proptest are for testing a sample of possible inputs that validate <em>properties</em> that should hold, yes.</p>



<a name="212144509"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/212144509" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#212144509">(Oct 03 2020 at 00:43)</a>:</h4>
<p>It's <em>not</em> however a replacement for testing edge cases, which is why I specified a list of unusual cases to test... it will only once in a blue moon land on "test input with T::MAX".</p>



<a name="212144538"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/212144538" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#212144538">(Oct 03 2020 at 00:44)</a>:</h4>
<p>I see. though it seems to be a sibling of fuzzing (for discovering otherwise unknown edge cases)</p>



<a name="212144572"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/212144572" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#212144572">(Oct 03 2020 at 00:44)</a>:</h4>
<p>correct!</p>



<a name="212144583"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/212144583" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#212144583">(Oct 03 2020 at 00:44)</a>:</h4>
<p>so in that case, it seems the intention is to use it for entirely normal ops</p>



<a name="212144589"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/212144589" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#212144589">(Oct 03 2020 at 00:44)</a>:</h4>
<p>You need the ordinary regression tests on edge cases, and it effectively fuzzes your other assumptions.</p>



<a name="212144610"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/212144610" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#212144610">(Oct 03 2020 at 00:45)</a>:</h4>
<p>makes sense, definitely seems like a good idea</p>



<a name="212144622"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/212144622" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#212144622">(Oct 03 2020 at 00:45)</a>:</h4>
<p>any opinions on quickcheck vs proptest?  i'm guessing shrinking is not particularly important to us</p>



<a name="212144699"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/212144699" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#212144699">(Oct 03 2020 at 00:47)</a>:</h4>
<p>quickcheck is supposed to be faster, proptest has more nuanced control, which is why I suggested quickcheck.</p>



<a name="212144764"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/212144764" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#212144764">(Oct 03 2020 at 00:48)</a>:</h4>
<p>sounds good to me</p>



<a name="212145182"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/212145182" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#212145182">(Oct 03 2020 at 00:56)</a>:</h4>
<p>This is the argument for the proptest/hypothesis way of doing things: <a href="https://hypothesis.works/articles/integrated-shrinking/">https://hypothesis.works/articles/integrated-shrinking/</a></p>



<a name="212145240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/212145240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#212145240">(Oct 03 2020 at 00:57)</a>:</h4>
<p>it's uh, pretty contentiously posed. :P but not completely insane.</p>



<a name="218229415"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/218229415" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#218229415">(Nov 29 2020 at 20:40)</a>:</h4>
<p><span class="user-mention" data-user-id="281757">@Jubilee</span> I'm looking into resurrecting this topic (if only for ease of adding new tests)</p>
<p>I've looked into proptest and it has pretty good support for generating specific classes of floating point values (normal, subnormal, infinity, etc) and should make it easy to generate things like vectors with only a single non-normal value, etc.  I think this is probably worth the (hopefully minimal) performance hit vs quickcheck.</p>
<p>Regarding the "standard" set of tests, is there anything in particular you are looking for, beyond just checking normal values?</p>



<a name="218346179"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/218346179" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#218346179">(Nov 30 2020 at 21:07)</a>:</h4>
<p>Oh awesome.</p>
<p>Yeah basically tests should check the fixed interesting values + the subnormals, with both signs.</p>



<a name="225949046"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/225949046" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#225949046">(Feb 11 2021 at 04:59)</a>:</h4>
<p>So the good news: with the recent rustc PR in, I can now run my proptest branch on nightly, and it produces ~4000 passing tests</p>



<a name="225949057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/225949057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#225949057">(Feb 11 2021 at 04:59)</a>:</h4>
<p>The bad news is that on my relatively beefy MBP it takes 7 minutes to compile :/</p>



<a name="225949058"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/225949058" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#225949058">(Feb 11 2021 at 04:59)</a>:</h4>
<p>oof!</p>



<a name="225949124"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/225949124" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#225949124">(Feb 11 2021 at 05:00)</a>:</h4>
<p>4000 tests means 4000 functions to codegen, which I'm guessing is the problem</p>



<a name="225949221"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/225949221" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#225949221">(Feb 11 2021 at 05:02)</a>:</h4>
<p>We could change it to only test a single lane count (maybe 8? 16?) by default which seems to reduce it pretty significantly</p>



<a name="225949272"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/225949272" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#225949272">(Feb 11 2021 at 05:03)</a>:</h4>
<p>also almost all of what takes so long are the integer tests, I'm not sure if splitting it into different files would allow the compiler to parallelize better?</p>



<a name="225949615"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/225949615" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#225949615">(Feb 11 2021 at 05:11)</a>:</h4>
<p>sure, try splitting it up? it probably will go one module at a time.</p>



<a name="225990614"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/225990614" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#225990614">(Feb 11 2021 at 13:39)</a>:</h4>
<p>no, file breakup don't affect it. the unit of translation in rust is the crate.</p>
<p>you could try increasing the codegen-units in the profile though.</p>



<a name="225992761"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/225992761" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tm <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#225992761">(Feb 11 2021 at 13:54)</a>:</h4>
<p>The most basic unit of partitioning is de-facto a module (not a function), so splitting into files might help if they are in the same module currently.</p>



<a name="226004669"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226004669" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226004669">(Feb 11 2021 at 15:12)</a>:</h4>
<p>hm.</p>



<a name="226031992"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226031992" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226031992">(Feb 11 2021 at 17:59)</a>:</h4>
<p>no, separate files doesn't affect rust's compilation process.</p>



<a name="226032154"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226032154" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226032154">(Feb 11 2021 at 18:00)</a>:</h4>
<p>it affects like, ease of editing or item privacy or whatever, but each entire crate is a translation unit.</p>



<a name="226032505"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226032505" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226032505">(Feb 11 2021 at 18:02)</a>:</h4>
<p><a href="https://github.com/jakubadamw/rutenspitz">https://github.com/jakubadamw/rutenspitz</a> though maybe this could simplify the test suite? someone told me it's the new hotness in testing</p>



<a name="226032540"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226032540" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tm <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226032540">(Feb 11 2021 at 18:02)</a>:</h4>
<p>codegen-units controls the number of a code generations units within a single crate.</p>



<a name="226032894"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226032894" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226032894">(Feb 11 2021 at 18:05)</a>:</h4>
<p>I am pretty sure there is a nonzero amount of logical partitioning of compilation in-crate. The final _codegen and linking_ does happen all at once for a crate, but some eventful things like macros might be sub-crate.</p>



<a name="226033200"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226033200" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226033200">(Feb 11 2021 at 18:06)</a>:</h4>
<p><span class="user-mention" data-user-id="352985">@tm</span> i said that :3</p>



<a name="226033321"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226033321" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226033321">(Feb 11 2021 at 18:07)</a>:</h4>
<p><span class="user-mention" data-user-id="281757">@Jubilee</span> while possible, i doubt it currently works like this. intra-crate parallelism is very poor in the compiler.</p>



<a name="226033787"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226033787" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226033787">(Feb 11 2021 at 18:11)</a>:</h4>
<p>Unfortunately it seems all the time is spent in codegen <span aria-label="frown" class="emoji emoji-1f641" role="img" title="frown">:frown:</span></p>



<a name="226033858"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226033858" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226033858">(Feb 11 2021 at 18:11)</a>:</h4>
<p>That's what <code>-Ztime-passes</code> seemed to show</p>



<a name="226035684"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226035684" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tm <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226035684">(Feb 11 2021 at 18:25)</a>:</h4>
<p>The CGUs look unbalanced, so this is exactly the case where additional modules would help</p>



<a name="226036041"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226036041" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226036041">(Feb 11 2021 at 18:28)</a>:</h4>
<p>So actually now that I think about it, each "test" is actually its own module with 7 tests in it</p>



<a name="226036063"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226036063" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226036063">(Feb 11 2021 at 18:28)</a>:</h4>
<p>So there are several hundred modules</p>



<a name="226036162"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226036162" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226036162">(Feb 11 2021 at 18:29)</a>:</h4>
<p>Each type has a module too, so they're broken down between 10ish top level modules too</p>



<a name="226036236"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226036236" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226036236">(Feb 11 2021 at 18:29)</a>:</h4>
<p>Something like 10 modules containing 50 modules each containing 7 tests each...</p>



<a name="226036922"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226036922" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tm <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226036922">(Feb 11 2021 at 18:34)</a>:</h4>
<p>For me an outlier in compilation time is <code>LLVM_lto_optimize(ops.9l6yo248-cgu.15)</code> it contains mostly things from <code>crates/core_simd/tests/ops_impl/*_macros.rs</code>. I would try splitting that if possible.</p>



<a name="226037230"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226037230" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226037230">(Feb 11 2021 at 18:36)</a>:</h4>
<p>Oh I'm talking about my proptest branch, which is dramatically slower than anything in master right now</p>



<a name="226037278"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226037278" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226037278">(Feb 11 2021 at 18:36)</a>:</h4>
<p>It's a much more complete test suite</p>



<a name="226037650"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226037650" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tm <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226037650">(Feb 11 2021 at 18:39)</a>:</h4>
<p>Oh! The general steps would be to identify codegen units that take longer from others in <code>-Ztime-passes</code>, check what they contain with <code>-Zprint-mono-items=lazy</code> or <code>--emit=llvm-ir</code>, and if they are unbalanced try splitting further.</p>



<a name="226039134"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226039134" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226039134">(Feb 11 2021 at 18:51)</a>:</h4>
<p>F.</p>



<a name="226056602"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226056602" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226056602">(Feb 11 2021 at 21:00)</a>:</h4>
<p>so hold on, do separate modules let things be split between the codegen units better?</p>



<a name="226056761"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226056761" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226056761">(Feb 11 2021 at 21:01)</a>:</h4>
<p>My understanding is each module corresponds to an LLVM codegen unit</p>



<a name="226057272"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226057272" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226057272">(Feb 11 2021 at 21:04)</a>:</h4>
<p>how on earth did no one ever explain this before</p>



<a name="226057465"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226057465" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226057465">(Feb 11 2021 at 21:05)</a>:</h4>
<p>I had no idea that modules were relevant.  I thought it could split arbitrary items.</p>



<a name="226057621"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226057621" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tm <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226057621">(Feb 11 2021 at 21:06)</a>:</h4>
<p>Initially functions from the same module are organized together in the same unit. Subsequently modules are merged until desired number of units is obtained, i.e., -Ccodegen-units=N. Thus, functions from one module won't be  split.  In incremental builds some details differ.</p>



<a name="226058046"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226058046" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tm <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226058046">(Feb 11 2021 at 21:09)</a>:</h4>
<p>Inline functions are included in every unit that references them.</p>



<a name="226071614"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226071614" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226071614">(Feb 11 2021 at 23:07)</a>:</h4>
<p>wowdonttalktomeiangy</p>



<a name="226096140"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226096140" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226096140">(Feb 12 2021 at 04:03)</a>:</h4>
<p>Relevant: consider using <code>proptest</code> as a library<br>
<a href="https://twitter.com/sunshowers6/status/1349819044967313408">https://twitter.com/sunshowers6/status/1349819044967313408</a></p>
<div class="inline-preview-twitter"><div class="twitter-tweet"><a href="https://twitter.com/sunshowers6/status/1349819044967313408"><img class="twitter-avatar" src="https://pbs.twimg.com/profile_images/1338638166148796416/LhQ820kS_normal.jpg"></a><p>The most important difference between proptest and quickcheck is composability. I've used both extensively, in practice reusing valuable test infrastructure is much easier with proptest. (guppy even has proptest helpers in the public API, behind an optional feature.) <a href="https://t.co/vn19tTenDM">https://twitter.com/sunshowers6/status/1349819044967313408/photo/1</a></p><span>- rain 🌧 (@sunshowers6)</span><div class="twitter-image"><a href="https://t.co/vn19tTenDM"><img src="https://pbs.twimg.com/media/EruE7yqU0AAWqBF.jpg:thumb"></a></div></div></div>



<a name="226097114"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226097114" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226097114">(Feb 12 2021 at 04:28)</a>:</h4>
<p>I am actually using proptest!</p>



<a name="226097122"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226097122" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226097122">(Feb 12 2021 at 04:28)</a>:</h4>
<p>I'm not sure it makes a huge difference for us but it is definitely slightly more user friendly, supposedly at the cost of speed</p>



<a name="226097127"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226097127" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226097127">(Feb 12 2021 at 04:28)</a>:</h4>
<p>Unfortunately the tests run very fast, they just take forever to compile</p>



<a name="226229844"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226229844" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226229844">(Feb 13 2021 at 06:19)</a>:</h4>
<p>The top few phases from <code>-Z time-passes</code>:</p>
<div class="codehilite"><pre><span></span><code>time:  10.465   run_linker
time:  18.384   monomorphization_collector_graph_walk
time:  29.552   link_binary
time:  29.579   link_crate
time: 186.976   finish_ongoing_codegen
time: 200.034   codegen_to_LLVM_IR
time: 216.851   link
time: 223.035   codegen_crate
time: 316.505   LLVM_passes(crate)
time: 450.932   total
</code></pre></div>



<a name="226229901"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226229901" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226229901">(Feb 13 2021 at 06:20)</a>:</h4>
<p>This is funny:<br>
<a href="https://github.com/rust-lang/stdsimd/pull/72/checks?check_run_id=1892401655#step:6:194">https://github.com/rust-lang/stdsimd/pull/72/checks?check_run_id=1892401655#step:6:194</a><br>
LLVM actually runs out of memory in github actions <span aria-label="upside down" class="emoji emoji-1f643" role="img" title="upside down">:upside_down:</span></p>



<a name="226230067"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226230067" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226230067">(Feb 13 2021 at 06:25)</a>:</h4>
<p>Interesting to note it seems to scale linearly.  Only building tests for 16-lane vectors isn't too bad, finishes in just under a minute for me:</p>
<div class="codehilite"><pre><span></span><code>time:   1.010   run_linker
time:   1.019   blocked_on_dep_graph_loading
time:   2.080   monomorphization_collector_graph_walk
time:   3.869   link_binary
time:   3.883   link_crate
time:  19.201   codegen_to_LLVM_IR
time:  21.840   codegen_crate
time:  23.151   finish_ongoing_codegen
time:  27.335   link
time:  35.083   LLVM_passes(crate)
time:  52.639   total
</code></pre></div>



<a name="226231083"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226231083" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226231083">(Feb 13 2021 at 06:57)</a>:</h4>
<p>Ah I think I may have figured it out.  I wrote the test helper functions parameterized over generic types that implement <code>Fn</code>, which end up regenerating the code for every single test</p>



<a name="226231134"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226231134" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226231134">(Feb 13 2021 at 06:58)</a>:</h4>
<p>Since performance isn't really an issue perhaps I can use <code>dyn Trait</code> to monomorphize the heavy functions into just a few variants instead of thousands</p>



<a name="226231574"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226231574" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226231574">(Feb 13 2021 at 07:12)</a>:</h4>
<p>Yep, down from 7.5 minutes to under a minute... we're getting somewhere</p>



<a name="226232226"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226232226" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226232226">(Feb 13 2021 at 07:32)</a>:</h4>
<p>nice.</p>



<a name="226262843"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226262843" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226262843">(Feb 13 2021 at 19:36)</a>:</h4>
<p><span class="user-mention" data-user-id="281757">@Jubilee</span> I think I may have found a floating point bug? I'm not really sure what it is</p>



<a name="226262844"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226262844" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226262844">(Feb 13 2021 at 19:36)</a>:</h4>
<p><a href="https://github.com/rust-lang/stdsimd/pull/72/checks?check_run_id=1894682308#step:6:384">https://github.com/rust-lang/stdsimd/pull/72/checks?check_run_id=1894682308#step:6:384</a></p>



<a name="226262859"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226262859" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226262859">(Feb 13 2021 at 19:37)</a>:</h4>
<p><code>0 *= x</code> should be <code>0</code> but it looks like we're getting <code>-x</code> for small <code>x</code>?</p>



<a name="226262862"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226262862" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226262862">(Feb 13 2021 at 19:37)</a>:</h4>
<p>Maybe LLVM is optimizing something incorrectly?</p>



<a name="226262941"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226262941" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226262941">(Feb 13 2021 at 19:38)</a>:</h4>
<p>do those tests check for biteq?</p>



<a name="226262978"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226262978" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226262978">(Feb 13 2021 at 19:39)</a>:</h4>
<p>yes they do, that link has the actual bit pattern in parens</p>



<a name="226262980"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226262980" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226262980">(Feb 13 2021 at 19:40)</a>:</h4>
<p>they aren't nans though</p>



<a name="226263351"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226263351" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226263351">(Feb 13 2021 at 19:48)</a>:</h4>
<p><span class="user-mention" data-user-id="312331">@Caleb Zulawski</span>  That number is <code>-9.54e-39</code> - you're hitting subnormals/denormal numbers. Float64s only go down to ~<code>2e-17</code> for machine epsilon.</p>



<a name="226263377"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226263377" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226263377">(Feb 13 2021 at 19:50)</a>:</h4>
<p><span class="user-mention" data-user-id="246783">@Miguel Raz Guzmán Macedo</span> was that off the top of your head?</p>



<a name="226263419"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226263419" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226263419">(Feb 13 2021 at 19:50)</a>:</h4>
<p>Hmmm you're right.  Why would it be different with vectors though?</p>



<a name="226263450"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226263450" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226263450">(Feb 13 2021 at 19:52)</a>:</h4>
<p>Also only for MulAssign and not Mul</p>



<a name="226263512"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226263512" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226263512">(Feb 13 2021 at 19:53)</a>:</h4>
<p><span class="user-mention" data-user-id="281757">@Jubilee</span> the machine epsilon yes. The numbers in the error trace look way smaller than that, so I played around with it a bit in Julia to confirm some suspicions, and the manual backed me up:</p>
<blockquote>
<p><a href="https://web.mit.edu/julia_v0.6.2/julia/share/doc/julia/html/en/manual/performance-tips.html#Treat-Subnormal-Numbers-as-Zeros-1">Treating subnormals as zeros should be used with caution, because doing so breaks some identities, such as x-y == 0 implies x == y:</a></p>
</blockquote>
<div class="codehilite" data-code-language="Julia"><pre><span></span><code><span class="n">julia</span><span class="o">&gt;</span> <span class="n">eps</span><span class="p">()</span>
<span class="mf">2.220446049250313e-16</span>

<span class="n">julia</span><span class="o">&gt;</span> <span class="n">x</span> <span class="o">=</span> <span class="mf">3f-38</span><span class="p">;</span> <span class="n">y</span> <span class="o">=</span> <span class="mf">2f-38</span><span class="p">;</span>

<span class="n">julia</span><span class="o">&gt;</span> <span class="n">set_zero_subnormals</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span> <span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="n">y</span><span class="p">,</span> <span class="n">x</span> <span class="o">==</span> <span class="n">y</span><span class="p">)</span>
<span class="p">(</span><span class="mf">0.0f0</span><span class="p">,</span> <span class="kc">false</span><span class="p">)</span>

<span class="n">julia</span><span class="o">&gt;</span> <span class="n">set_zero_subnormals</span><span class="p">(</span><span class="kc">false</span><span class="p">);</span> <span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="n">y</span><span class="p">,</span> <span class="n">x</span> <span class="o">==</span> <span class="n">y</span><span class="p">)</span>
<span class="p">(</span><span class="mf">1.0000001f-38</span><span class="p">,</span> <span class="kc">false</span><span class="p">)</span>
</code></pre></div>



<a name="226263516"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226263516" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226263516">(Feb 13 2021 at 19:53)</a>:</h4>
<p>hehe</p>



<a name="226263650"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226263650" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226263650">(Feb 13 2021 at 19:56)</a>:</h4>
<p>Also enforcing bit equality with floats will be tricky because </p>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="fm">assert_eq!</span><span class="p">(</span><span class="o">-</span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">);</span><span class="w"></span>
</code></pre></div>



<a name="226263669"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226263669" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226263669">(Feb 13 2021 at 19:57)</a>:</h4>
<p>Yes, we use biteq comparisons in certain tests only when we actually expect biteq.</p>



<a name="226263676"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226263676" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226263676">(Feb 13 2021 at 19:57)</a>:</h4>
<p>(I think in most places we expect it)</p>



<a name="226263680"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226263680" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226263680">(Feb 13 2021 at 19:57)</a>:</h4>
<p>Ah nice. I was trying to figure out from the trace if the proper method was being called but it's a bit hard to read the output.</p>



<a name="226263723"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226263723" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226263723">(Feb 13 2021 at 19:58)</a>:</h4>
<p>Yeah proptest doesn't provide the cleanest formatting, but it shows the input and output values</p>



<a name="226263731"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226263731" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226263731">(Feb 13 2021 at 19:58)</a>:</h4>
<p>And the assert that failed was against the equivalent scalar computation</p>



<a name="226263953"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226263953" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226263953">(Feb 13 2021 at 20:02)</a>:</h4>
<p>This is the test recipe that is generating the failures right?</p>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="cp">#[inline(never)]</span><span class="w"></span>
<span class="k">pub</span><span class="w"> </span><span class="k">fn</span> <span class="nf">test_binary_elementwise</span><span class="o">&lt;</span><span class="w"></span>
<span class="w">    </span><span class="n">Scalar1</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="n">Scalar2</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="n">ScalarResult</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="n">Vector1</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="n">Vector2</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="n">VectorResult</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="k">const</span><span class="w"> </span><span class="n">LANES</span>: <span class="kt">usize</span><span class="p">,</span><span class="w"></span>
<span class="o">&gt;</span><span class="p">(</span><span class="w"></span>
<span class="w">    </span><span class="n">fv</span>: <span class="kp">&amp;</span><span class="nc">dyn</span><span class="w"> </span><span class="nb">Fn</span><span class="p">(</span><span class="n">Vector1</span><span class="p">,</span><span class="w"> </span><span class="n">Vector2</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="nc">VectorResult</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="n">fs</span>: <span class="kp">&amp;</span><span class="nc">dyn</span><span class="w"> </span><span class="nb">Fn</span><span class="p">(</span><span class="n">Scalar1</span><span class="p">,</span><span class="w"> </span><span class="n">Scalar2</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="nc">ScalarResult</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="n">check</span>: <span class="kp">&amp;</span><span class="nc">dyn</span><span class="w"> </span><span class="nb">Fn</span><span class="p">([</span><span class="n">Scalar1</span><span class="p">;</span><span class="w"> </span><span class="n">LANES</span><span class="p">],</span><span class="w"> </span><span class="p">[</span><span class="n">Scalar2</span><span class="p">;</span><span class="w"> </span><span class="n">LANES</span><span class="p">])</span><span class="w"> </span>-&gt; <span class="kt">bool</span><span class="p">,</span><span class="w"></span>
<span class="p">)</span><span class="w"> </span><span class="k">where</span><span class="w"></span>
<span class="w">    </span><span class="n">Scalar1</span>: <span class="nb">Copy</span> <span class="o">+</span><span class="w"> </span><span class="nb">Default</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">core</span>::<span class="n">fmt</span>::<span class="n">Debug</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">DefaultStrategy</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="n">Scalar2</span>: <span class="nb">Copy</span> <span class="o">+</span><span class="w"> </span><span class="nb">Default</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">core</span>::<span class="n">fmt</span>::<span class="n">Debug</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">DefaultStrategy</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="n">ScalarResult</span>: <span class="nb">Copy</span> <span class="o">+</span><span class="w"> </span><span class="nb">Default</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">biteq</span>::<span class="n">BitEq</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">core</span>::<span class="n">fmt</span>::<span class="n">Debug</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">DefaultStrategy</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="n">Vector1</span>: <span class="nb">Into</span><span class="o">&lt;</span><span class="p">[</span><span class="n">Scalar1</span><span class="p">;</span><span class="w"> </span><span class="n">LANES</span><span class="p">]</span><span class="o">&gt;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">From</span><span class="o">&lt;</span><span class="p">[</span><span class="n">Scalar1</span><span class="p">;</span><span class="w"> </span><span class="n">LANES</span><span class="p">]</span><span class="o">&gt;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">Copy</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="n">Vector2</span>: <span class="nb">Into</span><span class="o">&lt;</span><span class="p">[</span><span class="n">Scalar2</span><span class="p">;</span><span class="w"> </span><span class="n">LANES</span><span class="p">]</span><span class="o">&gt;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">From</span><span class="o">&lt;</span><span class="p">[</span><span class="n">Scalar2</span><span class="p">;</span><span class="w"> </span><span class="n">LANES</span><span class="p">]</span><span class="o">&gt;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">Copy</span><span class="p">,</span><span class="w"></span>
<span class="w">    </span><span class="n">VectorResult</span>: <span class="nb">Into</span><span class="o">&lt;</span><span class="p">[</span><span class="n">ScalarResult</span><span class="p">;</span><span class="w"> </span><span class="n">LANES</span><span class="p">]</span><span class="o">&gt;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">From</span><span class="o">&lt;</span><span class="p">[</span><span class="n">ScalarResult</span><span class="p">;</span><span class="w"> </span><span class="n">LANES</span><span class="p">]</span><span class="o">&gt;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">Copy</span><span class="p">,</span><span class="w"></span>
<span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="n">test_2</span><span class="p">(</span><span class="o">&amp;|</span><span class="n">x</span>: <span class="p">[</span><span class="n">Scalar1</span><span class="p">;</span><span class="w"> </span><span class="n">LANES</span><span class="p">],</span><span class="w"> </span><span class="n">y</span>: <span class="p">[</span><span class="n">Scalar2</span><span class="p">;</span><span class="w"> </span><span class="n">LANES</span><span class="p">]</span><span class="o">|</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">        </span><span class="n">proptest</span>::<span class="n">prop_assume</span><span class="o">!</span><span class="p">(</span><span class="n">check</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">));</span><span class="w"></span>
<span class="w">        </span><span class="kd">let</span><span class="w"> </span><span class="n">result_1</span>: <span class="p">[</span><span class="n">ScalarResult</span><span class="p">;</span><span class="w"> </span><span class="n">LANES</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fv</span><span class="p">(</span><span class="n">x</span><span class="p">.</span><span class="n">into</span><span class="p">(),</span><span class="w"> </span><span class="n">y</span><span class="p">.</span><span class="n">into</span><span class="p">()).</span><span class="n">into</span><span class="p">();</span><span class="w"></span>
<span class="w">        </span><span class="kd">let</span><span class="w"> </span><span class="n">result_2</span>: <span class="p">[</span><span class="n">ScalarResult</span><span class="p">;</span><span class="w"> </span><span class="n">LANES</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">            </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="n">ScalarResult</span>::<span class="n">default</span><span class="p">();</span><span class="w"> </span><span class="n">LANES</span><span class="p">];</span><span class="w"></span>
<span class="w">            </span><span class="k">for</span><span class="w"> </span><span class="p">((</span><span class="n">i1</span><span class="p">,</span><span class="w"> </span><span class="n">i2</span><span class="p">),</span><span class="w"> </span><span class="n">o</span><span class="p">)</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">x</span><span class="p">.</span><span class="n">iter</span><span class="p">().</span><span class="n">zip</span><span class="p">(</span><span class="n">y</span><span class="p">.</span><span class="n">iter</span><span class="p">()).</span><span class="n">zip</span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="n">iter_mut</span><span class="p">())</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">                </span><span class="o">*</span><span class="n">o</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fs</span><span class="p">(</span><span class="o">*</span><span class="n">i1</span><span class="p">,</span><span class="w"> </span><span class="o">*</span><span class="n">i2</span><span class="p">);</span><span class="w"></span>
<span class="w">            </span><span class="p">}</span><span class="w"></span>
<span class="w">            </span><span class="n">result</span><span class="w"></span>
<span class="w">        </span><span class="p">};</span><span class="w"></span>
<span class="w">        </span><span class="k">crate</span>::<span class="n">prop_assert_biteq</span><span class="o">!</span><span class="p">(</span><span class="n">result_1</span><span class="p">,</span><span class="w"> </span><span class="n">result_2</span><span class="p">);</span><span class="w"></span>
<span class="w">        </span><span class="nb">Ok</span><span class="p">(())</span><span class="w"></span>
<span class="w">    </span><span class="p">});</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</code></pre></div>



<a name="226264003"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264003" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264003">(Feb 13 2021 at 20:04)</a>:</h4>
<p>Yep</p>



<a name="226264097"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264097" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264097">(Feb 13 2021 at 20:05)</a>:</h4>
<p>I'm gonna be the naive tourist and just ask:</p>
<ol>
<li>What's the <code>*o</code> that gets pattern matched in the <code>for</code>?</li>
</ol>



<a name="226264157"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264157" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264157">(Feb 13 2021 at 20:06)</a>:</h4>
<p>It's a mutable reference</p>



<a name="226264175"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264175" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264175">(Feb 13 2021 at 20:06)</a>:</h4>
<p>From result.iter_mut()</p>



<a name="226264183"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264183" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264183">(Feb 13 2021 at 20:07)</a>:</h4>
<p>Right, to assign back into the elements.</p>



<a name="226264256"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264256" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264256">(Feb 13 2021 at 20:08)</a>:</h4>
<p>Yep</p>



<a name="226264299"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264299" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264299">(Feb 13 2021 at 20:09)</a>:</h4>
<p>How can I find what <code>fv</code> and <code>fs</code> are for the first failure?</p>



<a name="226264387"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264387" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264387">(Feb 13 2021 at 20:11)</a>:</h4>
<p>You are perfectly welcome to ask "naive tourist" questions.</p>



<a name="226264405"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264405" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264405">(Feb 13 2021 at 20:11)</a>:</h4>
<p>I'm figuring it's a good pop quiz for y'all to make sure that everything is "plugged in" where it should be <span aria-label="sweat smile" class="emoji emoji-1f605" role="img" title="sweat smile">:sweat_smile:</span> and I get to learn along the way.</p>



<a name="226264489"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264489" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264489">(Feb 13 2021 at 20:13)</a>:</h4>
<p>I think this is a good reminder to crack open my Numerical Analysis textbook which needs some de-dusting anyways.</p>



<a name="226264626"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264626" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264626">(Feb 13 2021 at 20:16)</a>:</h4>
<p>I think the best way would be to look at the backtrace (which doesn't appear to be enabled)</p>



<a name="226264709"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264709" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264709">(Feb 13 2021 at 20:18)</a>:</h4>
<p><a href="https://github.com/rust-lang/stdsimd/blob/feature/proptest/crates/core_simd/tests/ops_macros.rs#L50-L64">https://github.com/rust-lang/stdsimd/blob/feature/proptest/crates/core_simd/tests/ops_macros.rs#L50-L64</a></p>



<a name="226264711"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264711" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264711">(Feb 13 2021 at 20:18)</a>:</h4>
<p>this is where those tests are defined</p>



<a name="226264721"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264721" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264721">(Feb 13 2021 at 20:18)</a>:</h4>
<p>oh wait</p>



<a name="226264723"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264723" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264723">(Feb 13 2021 at 20:18)</a>:</h4>
<p>ha</p>



<a name="226264731"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264731" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264731">(Feb 13 2021 at 20:19)</a>:</h4>
<p><span class="user-mention" data-user-id="246783">@Miguel Raz Guzmán Macedo</span> you were absolutely right</p>



<a name="226264741"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264741" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264741">(Feb 13 2021 at 20:19)</a>:</h4>
<p>I had a typo using <code>SubAssign</code></p>



<a name="226264744"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264744" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264744">(Feb 13 2021 at 20:19)</a>:</h4>
<p>:)</p>



<a name="226264754"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264754" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264754">(Feb 13 2021 at 20:19)</a>:</h4>
<p>THE NAIVE TOURIST METHOD STRIKES AGAIN <span aria-label="muscle" class="emoji emoji-1f4aa" role="img" title="muscle">:muscle:</span></p>



<a name="226264758"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264758" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264758">(Feb 13 2021 at 20:19)</a>:</h4>
<p><a href="https://github.com/rust-lang/stdsimd/blob/feature/proptest/crates/core_simd/tests/ops_macros.rs#L190">https://github.com/rust-lang/stdsimd/blob/feature/proptest/crates/core_simd/tests/ops_macros.rs#L190</a></p>



<a name="226264812"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264812" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264812">(Feb 13 2021 at 20:20)</a>:</h4>
<p>Ohhh lol yeah. That explains the subnormals - catastrophic cancellation with small inputs.</p>



<a name="226264840"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264840" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264840">(Feb 13 2021 at 20:21)</a>:</h4>
<p>Yup, I think that's exactly what was happening</p>



<a name="226264889"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264889" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264889">(Feb 13 2021 at 20:22)</a>:</h4>
<p>Well, as dumb as that was, I'd prefer a copy-paste error to an actual codegen issue...</p>



<a name="226264895"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264895" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264895">(Feb 13 2021 at 20:22)</a>:</h4>
<p>Yeah those are some heroic looking macros my friend.</p>



<a name="226264898"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264898" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264898">(Feb 13 2021 at 20:22)</a>:</h4>
<p><span aria-label="upside down" class="emoji emoji-1f643" role="img" title="upside down">:upside_down:</span></p>



<a name="226264906"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226264906" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226264906">(Feb 13 2021 at 20:22)</a>:</h4>
<p>They're actually not too bad, but could use some documenting</p>



<a name="226265008"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226265008" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226265008">(Feb 13 2021 at 20:25)</a>:</h4>
<p>I just learned about <code>cargo test --quiet</code> which is useful when there's such a large number of tests</p>



<a name="226265011"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226265011" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226265011">(Feb 13 2021 at 20:25)</a>:</h4>
<p>Yeah the dot printing is nice.</p>



<a name="226265091"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226265091" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226265091">(Feb 13 2021 at 20:27)</a>:</h4>
<p>How long is it to run the test suite locally <span class="user-mention" data-user-id="312331">@Caleb Zulawski</span> ? I assume the CI machines are beefy with many cores.</p>



<a name="226265100"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226265100" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226265100">(Feb 13 2021 at 20:27)</a>:</h4>
<p>it's actually not too bad anymore</p>



<a name="226265102"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226265102" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226265102">(Feb 13 2021 at 20:27)</a>:</h4>
<p>running only takes a few seconds</p>



<a name="226265107"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226265107" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226265107">(Feb 13 2021 at 20:27)</a>:</h4>
<p>I'll run a clean build in a second to get an idea</p>



<a name="226265157"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226265157" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226265157">(Feb 13 2021 at 20:28)</a>:</h4>
<p>Ah got it.</p>



<a name="226265315"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226265315" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226265315">(Feb 13 2021 at 20:30)</a>:</h4>
<p>A clean build test took just under a minute</p>



<a name="226265318"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226265318" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226265318">(Feb 13 2021 at 20:30)</a>:</h4>
<p>(deleted)</p>



<a name="226265334"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226265334" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226265334">(Feb 13 2021 at 20:31)</a>:</h4>
<p>my branch is actually in <code>rust-lang/stdsimd</code></p>



<a name="226265351"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226265351" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226265351">(Feb 13 2021 at 20:31)</a>:</h4>
<p>That explains why I couldn't find it then <span aria-label="upside down" class="emoji emoji-1f643" role="img" title="upside down">:upside_down:</span></p>



<a name="226266230"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226266230" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226266230">(Feb 13 2021 at 20:47)</a>:</h4>
<p>Ran tests with your fix, all good!</p>



<a name="226557787"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226557787" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226557787">(Feb 16 2021 at 18:48)</a>:</h4>
<p>WASM testing is REALLY slow with this, as are the cross builds.</p>



<a name="226558176"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226558176" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226558176">(Feb 16 2021 at 18:51)</a>:</h4>
<p>Anything we can do to cut down the test surface area on our non-tier-1 architectures (x86 and aarch64, ofc) is welcome, I think, especially if we're not running on the actual metal.</p>



<a name="226558302"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226558302" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226558302">(Feb 16 2021 at 18:52)</a>:</h4>
<p>Unfortunately I'm not sure there's really a way to do that without skipping things</p>



<a name="226558377"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226558377" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226558377">(Feb 16 2021 at 18:53)</a>:</h4>
<p>is dropping the # of lanes tested an option?</p>



<a name="226558408"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226558408" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226558408">(Feb 16 2021 at 18:53)</a>:</h4>
<p>Well I'd be worried about missing weird errors, but yeah</p>



<a name="226558533"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226558533" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226558533">(Feb 16 2021 at 18:54)</a>:</h4>
<p>I'm a little confused why cross is so slow, does it run the compiler itself in a VM?</p>



<a name="226558551"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226558551" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226558551">(Feb 16 2021 at 18:54)</a>:</h4>
<p>maybe?</p>



<a name="226558568"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/QuickCheck%20tests/near/226558568" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/QuickCheck.20tests.html#226558568">(Feb 16 2021 at 18:54)</a>:</h4>
<p>it'd be nice to test like... 4 lanes and then a random N for all tests, when we don't care too much.</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>